package com.shop.front.service;

import com.shop.common.core.PageResult;
import com.shop.front.validate.common.PageValidate;
import com.shop.front.validate.course.CourseSearchValidate;
import com.shop.front.vo.course.CourseCategoryListedVo;
import com.shop.front.vo.course.CourseDetailVo;
import com.shop.front.vo.course.CourseListedVo;

import java.util.List;
import java.util.Map;

public interface ICourseService {
    /**
     * 获取精选课程
     * @return 精选课程列表
     */
    List<CourseListedVo> selected();

    /**
     * 获取课程列表
     * @return 课程列表
     */
    PageResult<CourseListedVo> list(CourseSearchValidate searchValidate, PageValidate pageValidate);

    CourseDetailVo detail(Integer id);

    /**
     * 上报学习状态（更新记录学习时间）
     * @param courseId
     * @param historyId
     */
    void report(Integer courseId, Integer historyId);

    /**
     * 收藏课程
     */
    void collect(Integer id);

    /**
     * 取消收藏课程
     */
    void cancelCollect(Integer id);

    /**
     * 获取收藏课程分页
     */
    PageResult<CourseListedVo> collected(PageValidate pageValidate);

    /**
     * 获取课程学习记录
     */
    PageResult<CourseListedVo> history(PageValidate pageValidate);

    /**
     * 清空历史记录
     */
    void clearHistory();

    /**
     * 课程分类
     */
    List<CourseCategoryListedVo> category();

    /**
     * 分类详情
     * @param id
     * @return
     */
    CourseCategoryListedVo category(Integer id);

    Map<Integer, CourseCategoryListedVo> categoryMap();
}
